Design Tokensを考える前に俺たちは変数名について考え直すことがあるのではないか
https://gyazo.com/c23c7c38e90e271121e3d12fd652d17f
この資料はMeguro.css #7のLT資料です。
https://gyazo.com/5510d4e88c34b7dc94f91817952946e7
メニューのドキュメントアイコンより「Start presentation」クリックでプレゼンテーションが始まります
自己紹介
yamanoku.icon @ yamanoku
大山奥人, おおやまみちのく a.k.a やまのく
Twitter
GitHub
Qiita
得意領域
マークアップ・フロントエンド・UIデザイン・アクセシビリティ
既婚で1児の父と猫🐈🐈🐈の飼い主
9/30より流山市民になりました
増税前に戸建ても手に入れました。戸建てはいいですね…🏠
つくばエクスプレス民を集めたつくばexpress.js呑みをやる予定です
Vue Fes Japan 2019出ます
Vue.jsとNuxt.jsにおけるアクセシビリティ開発の話します
https://gyazo.com/886314cd5ad4b350984407600c1e3c6c
https://vuefes.jp/2019/sessions/yamanoku/
久々のMeguro.css参加なので何をやろうかいろいろ考えていた
https://gyazo.com/d378ae2ea396ba913cccff03e6b75d4f
https://gyazo.com/d56463288dd3170d8aece68572f527df
興味ある話題あったら懇親会とかで話しましょうや
今回の話すこと・話さないこと
Design Tokensを通して変数名はどうあるべきか改めて考える
CSSというよりかは言葉についての考える回
正解についてを話す感じではない
チームや会社に持ち帰って議論したり考え直すきっかけになれれば
前提:デザインシステムについて
https://gyazo.com/bf04495c0db15a3056502137272cc99c
アプリケーションやウェブサイト上での一貫性が保たれ、ユーザーが期待する機能性やユーザビリティを提供できるもの
デバイスを超えるものでWeb以外でもモバイルアプリにも提供できる
スタイルガイドラインとの違い
そのブランドが何なのかをコード単位で表現されたもの
yamanoku.icon コンポーネント単位で「あ!これってアレじゃん!」ってなれるもの
有名どころ
Google - Material Design
Salesforce - Lightning Design System
Microsoft - Office UI Fabric
Atlassian - Atlassian Design
GitHub - Primer
USWDS: The United States Web Design System
アメリカ合衆国のWebデザインシステム
そのほか → https://designsystemsrepo.com/design-systems/
参考:nwc_design#5c3abf5bc2cd3f0000566b24
世はまさに大デザインシステム時代
デザインシステムツールの流行
Figma
Invision
Storybook
zeroheight
Zeplin
designsystems_tokyo
事業会社がデザインシステムについてガチンコで考えるコミュニティ
参加企業
メルなんとか
サイバーなんとか
ビズなんとか
リクルートテクなんとか
frなんとか
弁護士なんとか.com
参加メモ書き → ds.t #Clarity2019 Redux in Tokyo
Clarity Conference
https://www.clarityconf.com/
デザインシステムのカンファレンス
2019年で4回目
Design Systems Coalition
前身のイベント
https://design.systems/coalition/
デザインシステムのツールが増えたのはこうした機会で議論されて開発された背景があるそうです
Design Tokensとは?
デザインシステムにおける、いわゆるスタイル変数集
Single Source of Truth(単一の情報源)と呼ばれるもの
利用することのメリット
そのToken値こそが真である(信頼できるデータ)
デザインデータから逐一カラーコード・空き・余白などを取得しなくてもいい
一括置き換えしやすくなる
大元を一気に変える
スタイルを使ってる箇所を変更する
Tokensの例
カラー
テキスト
背景色
ボーダー
フォント
シャドウ
メディアクエリ
スマートフォン
タブ
デスクトップ
アニメーション
Tokens形式
CSS variables
SASS、SCSS変数
jsonファイル
yamlファイル
Design Tokens Generator
デザインシステムというものを構築する面で考える必要がある1つの部分
本題:Design Tokensを設定する上で気をつけなければいけないと思ってること
(もとい変数名についてを考え直したいこと)
例:スタイル名と実際のカラーが不一致
起こりうる悲劇
https://gyazo.com/5dba2a8c0cbbcb58bde3bdf6f81b1108 https://twitter.com/8845musign/status/1176725368696270850
使い方として多様なシーンで利用されていたのではないか
クラス名だけが形骸化してしまった
色が目視でわかる人ならいいが、わからない人はこの違いに気付けるのか?
変数名を色名でつけるのは悪手なような気がしてる
その色名はほんとうにその色なのか?
$greenだけど青緑
「いやまぁgreenじゃん」「まぁそうですが…」
色盲の人はその色がちゃんと見えるか?
「これはgreenだから」「(そうは見えないのですが…)はい!」
https://gyazo.com/95a0518dfd6707eb677e5a9ef2a9e26e https://twitter.com/murokaco/status/1179702099354902528
わかる
曖昧な色名はどうつける?
https://gyazo.com/1f3d9374a1f7d12b658c5ebcf9c25505
どう変数名をつける?
https://gyazo.com/6c1a2c95c104ec489de50d84da8a9c20
赤い方がpurple、青いほうがviolet
と、分かっていたとしてもコードベースだけで瞬時に切り替えられるだろうか?
教養あるなしになってこないか?
ある程度教養は必要な気はするが… yamanoku.icon
皆が同様に使うために必要なハードル・バリアは減らしていきたい
色についてのアプローチ例
Atlassianのデザインシステム
カラー名が「色の名前」に準拠しきってない
https://gyazo.com/f8eb734831a0b41139e7c1b1ce4bc5a9
Pacific bridge
Squid ink
Doctor
「赤」についてもRed〜みたいなのばかりではなくバリエーションがある
https://gyazo.com/ca9662a3cd4e78206ccbda34f54f8a3d
覚える内容は増えるが、独立性は保てている
例:その単語はイメージしやすいものか
プログラミングは英語
皆さんの英語力はいかほどか?
聴きも読みも杜撰なレベルです yamanoku.icon
primary, secondary
button-color-primary、button-color-secondary
みたいな感じで、よく見るワードですね
ではその次はなんでしょうか?
https://gyazo.com/3649c05e400db327ff4b11af9315f87a https://kw-note.com/trivia/what-comes-after-primary-secondary/
教養問題
そもそも「プライマリ」ってなんだよ
番号名でやることが正解だろうか?
見出しレベルのようなイメージ
$button-color-01, $button-color-02, $button-color-03, $button-color-04...
うーん
モーション・アニメーションがあったりしたら…
https://gyazo.com/febc491246a35fa4dd0590c25d45089b
Easing Functions Cheat Sheet
指定された変数名で動きは統一されるけど
果たしてその言葉で想起しやすいだろうか?
親しみやすいワードを考える
フリー株式会社のデザインシステム名はvibes(バイブス)
デザインシステムの設計とアクセシビリティの実現 - Speaker Deck
https://gyazo.com/aba4581a5e8fc595d9d2a95908b6b693 https://twitter.com/hattorixxx/status/917720911914004481
バージョンが上がるのをバイブスが上がるとか言ってたらしい
変数名は所詮変数でしかないが
普段使っているものを使いやすくする仕組みはあってもいいと思った
yamanoku.iconの実装から見る反省・改善点
ポートフォリオサイトでもカスタムプロパティを通してDesign Tokensを利用している
https://yamanoku.net/about/#about:color-contrast_heading
https://gyazo.com/e89b92732c8eec1fc66826bb88ab5f99
このほかバーティカルリズムの指定もある
--rhythm: 24px
marginとかpaddingはここに準拠する
2倍や1/2の場合はcalcで制御してる
line-height: calc(var(--rhythm) * 2);
問題点
カラーの変数は色名指定してしまってる
一部ハードコーディング箇所あり
ダークモードでの指定
ライト
https://gyazo.com/3c7cb17698b69af30a920bd28d53e146
ダーク
https://gyazo.com/2633a27e6eb32e7f4e69cb5890aa1e7c
リンクカラーはライトがlinkBlueだけどダークはblueを使用している
後付でやってしまったがための功罪
そもそもblueとは何のためのものなのか?
yamanoku.icon それ専用の指定もあっていいのかなと感じるところ
今はページ・コンポーネント数が少ないので破綻しているところはないが大規模だとどうなる?
Issue建てた
カラーCSS変数名を色による名前にしておかない · Issue #124 · yamanoku/yamanoku.github.io
そんな感じの話で伝えたいこと
デザインシステムとは今後関わらんから…とこういう話題に参加しなくてもいいわけではない
「人間が使うもの」を想定してどう設計するのがいいかを今一度考えてみてほしい
新卒・中途の人が参入してきたときに使いやすくなってるか?
外部に依頼出ししたときにも使いやすくなっているか?
再び参画したときに開発しやすいままになっているか?
見た目だけではない文字情報における留意もしていかないといけない
それが万人に使いやすいものを目指すならなおのこと
俺たちは変数名について考え直しておかないといけない気がする